home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
L' Effet Pommier 3
/
L'Effet Pommier - Volume 03.iso
/
Programmation
/
Gooey1.3.1
/
C Templates
/
mmAppleEvents.c
< prev
next >
Wrap
Text File
|
1995-01-29
|
6KB
|
173 lines
$$Message MM AEs, mm:mmAEs$Prototype.name$.c
$$File mm:mmAEs$Prototype.name$.c
/* mmAEs$Prototype.name$ AppleEvents */
/* $CopyRight$ */
/*
Name: mmAEs$Prototype.name$.c
Function: AppleEvents for the Marksman¬ specific code.
History: $Date$ Original by $Author$
*/
#include "mmCommon$Prototype.name$.h" /* Common */
#include "Common$Prototype.name$.h" /* Common */
static OSErr OpenDocEventHandler(AppleEvent *message,AppleEvent *reply);
static OSErr PrintDocEventHandler(AppleEvent *message,AppleEvent *reply);
/* ======================================================= */
/* ======================================================= */
/* Routine: MissedAnyParameters */
/* Purpose: Used to check for any unread required parameters. */
/* Returns true if we missed at least one */
Boolean MissedAnyParameters(AppleEvent *message)
{
OSErr err; /* Error */
DescType ignoredActualType; /* Descriptor */
AEKeyword missedKeyword; /* Key word */
Size ignoredActualSize; /* Size */
EventRecord event; /* Event */
err = AEGetAttributePtr(message,keyMissedKeywordAttr,typeKeyword,&ignoredActualType,(Ptr)&missedKeyword,sizeof(AEKeyword),&ignoredActualSize);/* */
/* No error means that we found some unused parameters. */
if (err == noErr) /* See if any errors. */
{
event.message = *(long *)&ignoredActualType;
event.where = *(Point *)&missedKeyword;
err = errAEEventNotHandled;
}
return(err != errAEDescNotFound); /* Return possible error */
}
/* ======================================================= */
/* Routine: OpenDocEventHandler */
/* Purpose: Called when we recieve an AppleEvent with an ID of 'kAEOpenDocuments'. */
/* This routine gets the direct parameter, parses it up into little FSSpecs, and opens each indicated file */
static OSErr OpenDocEventHandler(AppleEvent *message, AppleEvent *reply)
{
OSErr err; /* Error */
AEDesc theDesc; /* Descriptor */
FSSpec theFSSpec; /* File Spec */
short ItemNumber; /* Index */
long numFilesToOpen; /* Number of files */
AEKeyword ignoredKeyWord; /* Key word */
DescType ignoredType; /* Descriptor type */
Size ignoredSize; /* Size */
err = noErr; /* No errors yet */
theDesc.dataHandle = nil; /* No data yet */
err = AEGetParamDesc(message,keyDirectObject,typeAEList,&theDesc);/* Get it */
if (err == noErr) /* See if any errors */
{
if (!MissedAnyParameters(message)) /* See if missing parameters */
{
err = AECountItems(&theDesc,&numFilesToOpen);/* Get number of files to do */
if (err == noErr) /* See if any errors */
{
for (ItemNumber=1; ItemNumber <= numFilesToOpen; ++ItemNumber)/* */
{
err = AEGetNthPtr(&theDesc,ItemNumber,typeFSS,&ignoredKeyWord,&ignoredType,(Ptr)&theFSSpec,sizeof(FSSpec),&ignoredSize);/* Get it */
if (err == noErr) /* See if any errors */
{
AE_OpenThisFile(&theFSSpec,ItemNumber,numFilesToOpen);/* Call the user open routine */
}
}
}
}
}
return(err); /* Return possible error */
}
/* ======================================================= */
/* Routine: PrintDocEventHandler */
/* Purpose: Called when we recieve an AppleEvent with an ID of 'kAEPrintDocuments'. */
/* This routine gets the direct parameter, parses it up into little FSSpecs, and prints each indicated file */
static OSErr PrintDocEventHandler(AppleEvent *message, AppleEvent *reply)
{
OSErr err; /* Error */
AEDesc theDesc; /* Descriptor */
FSSpec theFSSpec; /* File Spec */
short ItemNumber; /* Index */
long numFilesToOpen; /* Number of files */
AEKeyword ignoredKeyWord; /* Key word */
DescType ignoredType; /* Descriptor type */
Size ignoredSize; /* Size */
err = noErr; /* No errors yet */
theDesc.dataHandle = nil; /* No data yet */
err = AEGetParamDesc(message,keyDirectObject,typeAEList,&theDesc);/* Get it */
if (err == noErr) /* See if any errors */
{
if (!MissedAnyParameters(message)) /* See if missing parameters */
{
err = AECountItems(&theDesc,&numFilesToOpen);/* Get number of files to do */
if (err == noErr) /* See if any errors */
{
for (ItemNumber=1; ItemNumber <= numFilesToOpen; ++ItemNumber)/* */
{
err = AEGetNthPtr(&theDesc,ItemNumber,typeFSS,&ignoredKeyWord,&ignoredType,(Ptr)&theFSSpec,sizeof(FSSpec),&ignoredSize);/* Get it */
if (err == noErr) /* See if any errors */
{
AE_PrintThisFile(&theFSSpec,ItemNumber,numFilesToOpen);/* Call the user print routine */
}
}
}
}
}
return(err); /* Return possible error */
}
/* ======================================================= */
/* Routine: DispatchAppleEvent */
/* Purpose: Figure out where to dispatch this event to. */
/* See which way we should go */
pascal OSErr DispatchAppleEvent(AppleEvent *message,AppleEvent *reply, long refcon)
{
OSErr err; /* Error */
err = errAEEventNotHandled; /* Setup for an error */
switch (refcon) /* See which one */
{
case kAEOpenApplication: /* Open application */
err = AE_OpenedApplication(message,reply,refcon);
break;
case kAEOpenDocuments: /* Open documents */
err = OpenDocEventHandler(message,reply);
break;
case kAEPrintDocuments: /* Print documents */
err = PrintDocEventHandler(message,reply);
break;
case kAEQuitApplication: /* Close application */
err = AE_QuittingApplication(message,reply,refcon);
break;
default: /* allow other buttons, trap for debug */
err = errAEEventNotHandled; /* Nobody is home for that event */
break; /* end of otherwise */
} /* end of switch */
if (err != noErr) /* See if any errors */
err = AEPutParamPtr(reply,keyErrorNumber,typeShortInteger,(Ptr)&err,sizeof(short));/* Send back the error message */
return(err); /* Return possible error */
}
/* ======================================================= */
/* ======================================================= */
$$CloseFile